package org.java.auth.service.impl;

import org.java.auth.conf.JwtProperties;
import org.java.auth.feigns.UserClient;
import org.java.auth.pojo.UserInfo;
import org.java.auth.service.AuthService;
import org.java.auth.utils.JwtUtils;
import org.java.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author WHQ
 * @version 1.0
 * @date 2022-3-11 0011 下午 7:29
 */
@Service
public class AuthServiceImpl implements AuthService {
    @Autowired
    private UserClient userClient;
    @Autowired
    private JwtProperties jwtProperties;
    @Override
    public String login(String username, String password) {
        //通过用户模块对外暴漏的接口查询用户信息是否存在
        User user = userClient.queryUser(username, password);
        if (user==null){
            //如果用户为空。直接返回空
            return null;
        }
        //不为空，将用户信息封装成载荷对象，进行加密，得到token
        UserInfo userInfo=new UserInfo(user.getId(),user.getEmail());
        //通过私钥，将载荷对象加密成token
        /**
         * 参数1：载荷对象
         * 参数2：私钥-----jwt配置类中有
         * 参数3：有效时间(单位:分钟)-----jwt配置类中有
         */
        try {
            String token = JwtUtils.generateToken(userInfo, jwtProperties.getPrivateKey(), jwtProperties.getExpire());
            //生成成功，直接返回token
            return  token;
        } catch (Exception e) {
            e.printStackTrace();
            //如果有异常代表生成token失败，直接返回空
            return null;
        }
    }
}
